#pragma once
#include<iostream>
#include<sys/stat.h>
#include<experimental/filesystem>
#include<jsoncpp/json/json.h>
#include<fstream>
#include<string>
#include<vector>
#include"bundle.h"

using namespace std;
namespace cloudBackup{
    namespace fs = std::experimental::filesystem;
    class FileUtil
    {
        private:
            const string _filename;         //文件名（包括路径）
        public:
            FileUtil(const string& filename)
                :_filename(filename)
            {}
            long int FileSize();            //文件大小
            time_t LastModFile();           //文件修改时间
            time_t LastAccFile();           //文件访问时间
            string FileName();              //文件名
            bool GetPosLen(string *body,size_t pos,size_t len);         //读取指定文件内容
            bool GetContent(string *body);                              //读取文件全部内容
            bool SetContent(const string &body);                        //写入文件全部内容
            bool Compress(const string& packname);                      //压缩
            bool UnCompress(const string& packname);                    //解压
            bool Exists();
            bool CreateDir();
            bool ScanDir(vector<string> *arry);
    };

    class JsonUtil
    {
        public:
            static bool Serialize(const Json::Value &root,string *str);             //序列化
            static bool UnSerialize(const string &str,Json::Value *root);           //反序列化
    };
}